package com.crm.service.customerManager;

import com.crm.model.entity.customerManager.*;
import com.crm.model.qo.customerManager.AnalyseCustomerQO;
import com.crm.model.qo.customerManager.CustomerQO;
import com.crm.model.qo.customerManager.MoveCustomerQO;
import com.crm.model.qo.opportunityManager.OpportunityQO;
import com.crm.model.vo.contactManager.IndustryAreaVO;
import com.crm.model.vo.csd.customerManager.CustomerMemberCardDetailVO;
import com.crm.model.vo.customerManager.*;
import com.crm.model.vo.datasearch.DataSearchResultVO;
import com.crm.model.vo.opportunityManager.OpportunityCustomerVO;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;

/**
 * @ Author ：bj
 * @ Date   ：2021/7/1 10:03
 */
public interface CustomerProductDetailMemberCardDbService {

    /**
     * 客服管理-客户详情-会员卡信息
     * @param customerId 客户id
     * @return
     */
    List<CustomerProductDetailMemberCard> selectCardByCustomerId(String customerId,String cardNumber);

    /**
     * 查询会员卡信息
     * @param memberCardNumber 会员卡号
     * @param accountId 所有人id
     * @param customerId 客户id
     * @param contractId 合同id
     * @param productOrderId 订单id
     * @param companyId 公司id
     * @return
     */
    CustomerProductDetailMemberCard selectCustomerProductDetailMemberCard(String memberCardNumber, String accountId, String customerId, String contractId, String productOrderId, String companyId);

    /**
     * 通过会员卡编号查询
     * @param memberCardNumber 会员卡号
     * @return
     */
    CustomerProductDetailMemberCard getCustomerProductDetailMemberCard(String memberCardNumber);

    /**
     * 查询导入会员卡的数据
     * @return
     */
    List<CustomerProductDetailMemberCardRawDataVO> selectCardDataRaw();

    /**
     * 查询会员卡没有合同id的
     * @return
     */
    List<CustomerProductDetailMemberCard> selectCardData();

    /**
     * 修改会员卡信息
     * @param card 会员卡
     */
    Boolean updateCard(CustomerProductDetailMemberCard card);

    /**
     * 通过id查询会员卡信息
     * @param customerProductDetailMemberCardId 会员卡id
     * @return
     */
    CustomerProductDetailMemberCard selectById(String customerProductDetailMemberCardId);

    /**
     * 新增会员卡
     * @param card 会员卡
     * @return
     */
    Boolean addCustomerProductDetailMemberCard(CustomerProductDetailMemberCard card);

    /**
     * 根据时间段查询会员卡信息补全accountId
     * @param startTm 开始时间
     * @param endTm 结束时间
     * @return
     */
    List<CustomerProductDetailMemberCard> selectTimeEndCardData(String startTm, String endTm);

    /**
     * 查询会员卡
     * @param customerProductDetailMemberCardId
     * @return
     */
    CustomerMemberCardDetailVO selectCustomerCard(String customerProductDetailMemberCardId);

    /**
     * 修改会员卡信息
     * @param vo
     * @return
     */
    Boolean updateCardXml(CustomerMemberCardDetailVO vo);
}
